Packet-based video streaming has been used in a variety of broadcast and on-demand video applications for a variety of types of video such as sporting events, television, concerts and movies. With these approaches, video data is packetized in accordance with a communications protocol for a particular network over which the video is to be delivered. The packetized video data is delivered to recipients in one or more of a variety of manners, using a host or source to provide the video data. In some applications, network nodes (e.g., servers or peers) both receive video data and provide the received video data to recipients.
One approach to packet-based video transfer involves a peer-to-peer (P2P) transfer approach, where viewers contribute their resources to the network to act as relays for the media streams. Such peer-to-peer transfer has grown tremendously in recent years. In 2003, peer-to-peer became the most popular Web application, and, at the end of 2004, peer-to-peer protocols represented over 60% of the total Internet traffic, dwarfing web browsing, which is the second most popular application. This rapid success is fueled by file transfer networks that allow users to swap media files, despite the large latency often necessary to complete a download. Growth in peer-to-peer approaches is expected to continue at a fast pace, as new compelling peer-to-peer applications are developed.
One approach to peer-to-peer video transfer is peer-to-peer multicast, where a media stream is sent to a large audience using the uplink of viewers in the audience to forward the media stream. Similar to file transfer networks, data propagation is accomplished, via a distributed protocol, which lets peers self-organize into distribution trees or meshes. Different transmission trees are established, which connect the different peers interested in receiving the media stream. These trees are rooted at the source and the branches of each tree link a peer to its descendants. Complementary portions of the video stream are distributed over the different trees, and peers join each of the multiple trees to decode and playout the video successfully. As video traffic is relayed by the peers along the different branches of the multicast trees, the video source need only serve a small subset of peers.
While useful and growing in popularity, peer-to-peer approaches such as those involving multicast have been limited in their ability to provide quality video, particularly on a real-time basis, as is desirable to achieve a TV-like viewing experience. For example, the access bandwidth of peers is often insufficient to support high quality video, peers may choose to disconnect at any time (making for an unreliable and dynamic network fabric), and each relay point or “hop” in a peer-to-peer network (e.g., a peer's PC that relays data) introduces additional delay. When links are congested, these challenges become exacerbated, particularly for low-latency applications such as interactive video streaming.
These and other characteristics have been challenging to the implementation of video in packet-based network environments.